/*
 * Copyright 2004-2005 asoft
 * 本软件及其所有拷贝的名称，与光盘上或本软件中注明的公司同在。
 * 本软件及文档享有版权，并受国家版权法及国际协约条款的保护。
 * 您不可以从本软件中去掉其版权声明；并保证为本软件的拷贝（本部或部分）* 复制版权声明。
 * 您同意制止以任何形式非法拷贝本软件及文档。
 * 版权信息参见：
 *      http://www.asoft.cn/licenses
 */

package com.asoft.common.logs.service;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;

import com.asoft.common.base.web.service.AbstractTreeService;
import com.asoft.common.logs.manager.OperatingLogManager;
import com.asoft.common.logs.view.foreveryone.ModelNodeOfOperatingLogTree4EveryOne;
import com.asoft.common.logs.view.foreveryone.ModuleNodeOfOperatingLogTree4EveryOne;
import com.asoft.common.logs.view.foreveryone.RootNodeOfOperatingLogTree4EveryOne;
import com.asoft.common.logs.view.foreveryone.ServiceNodeOfOperatingLogTree4EveryOne;

/**
 * <p>Title: 操作日志 - 查询操作日志,将结果通过树图表现</p>
 * <p>Description:
 *      如果有多种节点类型(根节点除外),必须传
 *      递多个根节点实体
 * </p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: asoft</p>
 * @ $Author: author $
 * @ $Date: 2005/02/15 09:14:59 $
 * @ $Revision: 1.7 $
 * @ created in 2005-11-14
 *
 */

public class FindOperatingLogsForTreeViewService extends AbstractTreeService
{
        /** 节点类型- 根结点 */
        public static String ROOTNODE = "0";

        /** 节点类型- 模块 */
        public static String MODULE = "1";

        /** 节点类型- 实体 */
        public static String MODEL = "2";

        /** 节点类型- 操作 */
        public static String SERVICE = "3";

        static Logger logger = Logger.getLogger(FindOperatingLogsForTreeViewService.class);

        private OperatingLogManager operatingLogManager;

        public void setOperatingLogManager(OperatingLogManager operatingLogManager)
        {
                this.operatingLogManager = operatingLogManager;
        }

        /** 执行服务 */
        public void createModels(Map modelsMap,
                                 HttpServletRequest request)
        {
                logger.debug("1. 获取查询条件完毕,开始查询.....");
                // 获取模块节点
                List modules = this.operatingLogManager.findModules();
                // 获取实体节点
                List models = this.operatingLogManager.findModels();
                // 获取服务节点
                List services = this.operatingLogManager.findServices();
                // 第一个元素为根节点
                modelsMap.put(ROOTNODE,null);
                // put(节点类型名称,节点对应models)
                modelsMap.put(MODULE,modules);
                modelsMap.put(MODEL,models);
                modelsMap.put(SERVICE,services);
                // 其他类型节点
        }

        /** 设置nodeModel's views */
        public void setNodeViews(Map viewsMap,
                                 HttpServletRequest request)
        {
                // 从 request里面获取角色参数
                // for everyone
                viewsMap.put(ROOTNODE,new RootNodeOfOperatingLogTree4EveryOne()); // 设置根节点
                viewsMap.put(MODULE,new ModuleNodeOfOperatingLogTree4EveryOne());
                viewsMap.put(MODEL,new ModelNodeOfOperatingLogTree4EveryOne());
                viewsMap.put(SERVICE,new ServiceNodeOfOperatingLogTree4EveryOne());
        }
}


